# @lhc
# 2025年8月8日

import re

# 读取反编译的文件内容
with open("ShellResourceFetcher.txt", "r", encoding="utf-8") as f:
    content = f.read()

# 匹配机型字段（如SHELL_NOTE9_PRO）和对应的内部标识值（如"gauguinpro"）
field_pattern = r'\.field private static final (SHELL_\w+):Ljava/lang/String; = "(\w+)"'
field_matches = re.findall(field_pattern, content)
field_map = {v: k for k, v in field_matches}  # 构建值到字段名的映射

# 匹配十六进制值和对应的机型标识（如"gauguinpro"）
hex_pattern = r'const-wide v\d+, (0x[0-9A-Fa-f]+)L\n.*?const-string v\d+, "(\w+)"'
hex_matches = re.findall(hex_pattern, content, re.DOTALL)


# 输出结果（先添加字段说明头）
result = [
    "# 机型名称   机型内部标识   十六进制值   十进制值   请求URL",
]

def hex_to_decimal(hex_str):
    """将十六进制字符串转换为十进制数值"""
    # 移除可能的后缀L并转换
    clean_hex = hex_str.replace('L', '').replace('l', '')
    return int(clean_hex, 16)

def generate_url(decimal_value):
    """生成请求URL"""
    return f"https://i.mi.com/gallery/public/resource/download?id={decimal_value}"

for hex_val, identifier in hex_matches:
    if identifier in field_map:
        # 计算十进制值
        decimal_val = hex_to_decimal(hex_val)
        # 生成URL
        url = generate_url(decimal_val)
        # 添加到结果列表
        result.append(f"{field_map[identifier]}   {identifier}   {hex_val}L   {decimal_val}   {url}")

# 按机型名称排序
sorted_result = sorted(result)

# 输出到屏幕 + 同时写入文件
with open('data.txt', 'w', encoding='utf-8') as f:  # 打开文件（写入模式）
    for line in sorted_result:
        print(line)          # 打印到屏幕
        f.write(line + '\n') # 写入文件（每行末尾加换行符）

print("数据已保存到 data.txt")